function getFailableParserFn( options ) {
return function ( args ) {
var fallback,
+ // eslint-disable-next-line new-cap
parser = new mw.jqueryMsg.parser( options ),
key = args[ 0 ],
argsArray = $.isArray( args[ 1 ] ) ? args[ 1 ] : slice.call( args, 1 );
}
return function () {
+ var failableResult;
if ( !failableParserFn ) {
failableParserFn = getFailableParserFn( options );
}
- var failableResult = failableParserFn( arguments );
+ failableResult = failableParserFn( arguments );
if ( format === 'text' || format === 'escaped' ) {
return failableResult.text();
} else {
var failableParserFn;
return function () {
+ var $target;
if ( !failableParserFn ) {
failableParserFn = getFailableParserFn( options );
}
- var $target = this.empty();
+ $target = this.empty();
appendWithoutParsing( $target, failableParserFn( arguments ) );
return $target;
};
this.settings.onlyCurlyBraceTransform = ( this.settings.format === 'text' || this.settings.format === 'escaped' );
this.astCache = {};
+ // eslint-disable-next-line new-cap
this.emitter = new mw.jqueryMsg.htmlEmitter( this.settings.language, this.settings.magic );
};
/**
* Fetch the message string associated with a key, return parsed structure. Memoized.
- * Note that we pass '[' + key + ']' back for a missing message here.
+ * Note that we pass '⧼' + key + '⧽' back for a missing message here.
*
* @param {string} key
- * @return {string|Array} string of '[key]' if message missing, simple string if possible, array of arrays if needs parsing
+ * @return {string|Array} string of '⧼key⧽' if message missing, simple string if possible, array of arrays if needs parsing
*/
getAst: function ( key ) {
var wikiText;
if ( !this.astCache.hasOwnProperty( key ) ) {
wikiText = this.settings.messages.get( key );
if ( typeof wikiText !== 'string' ) {
- wikiText = '\\[' + key + '\\]';
+ wikiText = '⧼' + key + '⧽';
}
this.astCache[ key ] = this.wikiTextToAst( wikiText );
}
/**
* Starts the parse
*
- * @param {Function} rootExpression root parse function
+ * @param {Function} rootExpression Root parse function
+ * @return {Array|null}
*/
function start( rootExpression ) {
var result = nOrMore( 0, rootExpression )();
/**
* htmlEmitter - object which primarily exists to emit HTML from parser ASTs
+ *
+ * @param {Object} language
+ * @param {Object} magic
*/
mw.jqueryMsg.htmlEmitter = function ( language, magic ) {
- this.language = language;
var jmsg = this;
+ this.language = language;
$.each( magic, function ( key, val ) {
jmsg[ key.toLowerCase() ] = function () {
return val;
* It may, though, if the wikitext appears in extension-controlled content.
*
* @param {string[]} nodes
+ * @return {jQuery}
*/
wikilink: function ( nodes ) {
var page, anchor, url, $el;
* @return {number|string} Formatted number
*/
formatnum: function ( nodes ) {
- var isInteger = ( nodes[ 1 ] && nodes[ 1 ] === 'R' ) ? true : false,
+ var isInteger = !!nodes[ 1 ] && nodes[ 1 ] === 'R',
number = nodes[ 0 ];
return this.language.convertNumber( number, isInteger );
return function () {
return reusableParent.msg( this.key, this.parameters ).contents().detach();
};
- } )();
+ }() );
}( mediaWiki, jQuery ) );